import { ApiService } from '~/common/api/api-service'

class DefectIdentificationService {
  private apiService: ApiService

  constructor() {
    // 使用相对路径访问后端数据
    this.apiService = new ApiService('')
  }

  /**
   * 获取MySQL缺陷识别报告列表
   */
  async getMysqlReports(): Promise<string[]> {
    try {
      const response = await fetch('http://192.168.1.5:5000/api/detection/mysql/reports');
      const data = await response.json();

      if (data.success) {
        return data.files
      } else {
        console.error('获取MySQL报告列表失败:', data.message)
        return []
      }
    } catch (error) {
      console.error('获取MySQL报告列表失败:', error)
      return []
    }
  }

  /**
   * 获取Web缺陷识别报告列表
   */
  async getWebReports(): Promise<string[]> {
    try {
      const response = await fetch('http://192.168.1.5:5000/api/detection/web/reports');
      const data = await response.json();

      if (data.success) {
        return data.files
      } else {
        console.error('获取Web报告列表失败:', data.message)
        return []
      }
    } catch (error) {
      console.error('获取Web报告列表失败:', error)
      return []
    }
  }

  /**
   * 获取文件内容
   * @param fileType 文件类型 ('mysql' 或 'web')
   * @param filename 文件名
   */
  async getFileContent(fileType: string, filename: string): Promise<string> {
    try {
      // 根据文件类型构建正确的URL，使用新的API端点
      const url = fileType === 'mysql'
        ? `http://192.168.1.5:5000/api/detection/mysql/reports/${filename}`
        : `http://192.168.1.5:5000/api/detection/web/reports/${filename}`

      const response = await fetch(url)
      
      // 检查响应状态
      if (!response.ok) {
        throw new Error(`HTTP error! status: ${response.status}`);
      }
      
      const data = await response.json();
      
      if (data.success) {
        return data.content;
      } else {
        console.error(`获取${fileType}文件内容失败:`, data.message);
        return '';
      }
    } catch (error) {
      console.error(`获取${fileType}文件内容失败:`, error)
      return ''
    }
  }
}

export default DefectIdentificationService